(以下文章擷取自筆者的 blog,分享給大家)
在資料庫的 Audit (稽核) 部份,需要有一套如同 SQL Server 的方式來執行。
分成兩篇來介紹 Audit。
好在 MariaDB 有 Server Audit Plugin,相關文件在此。
開起來很簡單,設定也很容易。
SQL Server 的 Audit 是用 Trace File 來儲存 Audit 資料,以下用一個表格做一個比較
| 項目 | SQL Server Trace File Audit | MariaDB Server Audit Plugin |
|---|---|---|
| 儲存方式 | Binary File 自有格式 | Text File (逗號隔開), syslog |
| 取用方式 | fn_trace_gettable() 取得資料 |
打開檔案或是 syslog client |
| 紀錄分類方式與數量 | 20 種 Class,每個 Class 數個 Events (2012) | 8 種 (CONNECT, QUERY, READ, WRITE, CREATE, ALTER, RENAME, DROP) |
| 資料的控制 | sp_trace_* 設定人事時地物,檔案需要自己處理 |
server_audit_* 設定人事時地物,有 rotate 設定 |
在文件裡 Logging events 一節提到的可設定的 Type,說明如下
CONNECT 就是連線訊息QUERY 執行 SQL 指令與結果代碼TABLE 哪些 Tables 因此 QUERY 而受影響QUERY_DDL DDL 的 Query,是 QUERY的子集合QUERY_DML DML 的 Query,是 QUERY的子集合QUERY_DCL DCL 的 Query,是 QUERY的子集合什麼是預設的 DDL, DML, DCL 的 Query 呢? 這邊要看 Code 才知道,因為後續會有改程式碼的動作,所以到時一併說明之。
另外一個部份是 Output 的 Operation 欄位,有 CONNECT, QUERY, READ, WRITE, CREATE, ALTER, RENAME, DROP,這部份的詳細定義也是要看 Code。
下一篇就是發揮開源精神,直接改 Plugin 的 Code 來滿足需求。